home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / c / inter40c.zip / MEMORY.LST < prev    next >
File List  |  1994-02-06  |  27KB  |  605 lines

  1. [This file was originally provided by Robin Walker.  --Ralf]
  2. Last Update: 2/6/94
  3.  
  4. Format of BIOS Data Segment at segment 40h:
  5.         {items in curly braces not documented by IBM}
  6. Offset    Size    Description
  7.  00h    WORD    Base I/O address of 1st serial I/O port, zero if none
  8.  02h    WORD    Base I/O address of 2nd serial I/O port, zero if none
  9.  04h    WORD    Base I/O address of 3rd serial I/O port, zero if none
  10.  06h    WORD    Base I/O address of 4th serial I/O port, zero if none
  11.            Note: Above fields filled in turn by POST as it finds serial
  12.             ports. POST never leaves gaps. DOS and BIOS serial device
  13.             numbers may be redefined by re-assigning these fields.
  14.  08h    WORD    Base I/O address of 1st parallel I/O port, zero if none
  15.  0Ah    WORD    Base I/O address of 2nd parallel I/O port, zero if none
  16.  0Ch    WORD    Base I/O address of 3rd parallel I/O port, zero if none
  17.  0Eh    WORD    [non-PS] Base I/O address of 4th parallel port, zero if none
  18.         [PS] {Segment of Extended BIOS Data Segment}
  19.             Note: Above fields filled in turn by POST as it finds
  20.             parallel ports. POST never leaves gaps. DOS and BIOS
  21.             parallel device numbers may de redefined by re-assigning
  22.             these fields.
  23.  10h    WORD    Installed hardware:
  24.             bits 15-14: number of parallel devices
  25.             bit        13: [Conv, PS/2-55LS] Internal modem
  26.             bit        12: reserved
  27.             bits 11- 9: number of serial devices
  28.             bit         8: reserved
  29.             bits  7- 6: number of diskette drives minus one
  30.             bits  5- 4: Initial video mode:
  31.                     00b = EGA,VGA,PGA
  32.                     01b = 40 x 25 color
  33.                     10b = 80 x 25 color
  34.                     11b = 80 x 25 mono
  35.             bit         3: reserved
  36.             bit         2: [PS] =1 if pointing device
  37.                 [non-PS] reserved
  38.             bit         1: =1 if math co-processor
  39.             bit         0: =1 if diskette available for boot
  40.  12h    BYTE    [Conv] POST status
  41.         [AT] {Manufacturing test initialisation flags}
  42.         [PS/2-25] POST system flag
  43.             bit 0: optional memory failed; memory remapped
  44.             bit 1: real-time clock installed
  45.  13h    WORD    Base memory size in kbytes (0-640)
  46.  15h    BYTE    [AT] {Manufacturing test scratch pad}
  47.         [Compaq Deskpro 386] previous scan code
  48.  16h    BYTE    [AT] {Manufacturing test scratch pad}
  49.         [PS/2 Mod 30] {BIOS control flags}
  50.         [Compaq Deskpro 386] keyclick loudness (00h-7Fh)
  51.  17h    BYTE    Keyboard status flags 1:
  52.             bit 7 =1 INSert active
  53.             bit 6 =1 Caps Lock active
  54.             bit 5 =1 Num Lock active
  55.             bit 4 =1 Scroll Lock active
  56.             bit 3 =1 either Alt pressed
  57.             bit 2 =1 either Ctrl pressed
  58.             bit 1 =1 Left Shift pressed
  59.             bit 0 =1 Right Shift pressed
  60.  18h    BYTE    Keyboard status flags 2:
  61.             bit 7 =1 INSert pressed
  62.             bit 6 =1 Caps Lock pressed
  63.             bit 5 =1 Num Lock pressed
  64.             bit 4 =1 Scroll Lock pressed
  65.             bit 3 =1 Pause state active
  66.             bit 2 =1 Sys Req pressed
  67.             bit 1 =1 Left Alt pressed
  68.             bit 0 =1 Left Ctrl pressed
  69.  19h    BYTE    Keyboard: Alt-nnn keypad workspace
  70.  1Ah    WORD    Keyboard: ptr to next character in keyboard buffer
  71.  1Ch    WORD    Keyboard: ptr to first free slot in keyboard buffer
  72.  1Eh 16 WORDs    Keyboard circular buffer (but see 80h, 82h for override)
  73.  3Eh    BYTE    Diskette recalibrate status:
  74.             bit 7 =1 Diskette hardware interrupt occurred
  75.             bits 6-4 reserved
  76.             bit 3 =1 Recalibrate diskette 3
  77.             bit 2 =1 Recalibrate diskette 2
  78.             bit 1 =1 Recalibrate diskette 1
  79.             bit 0 =1 Recalibrate diskette 0
  80.  3Fh    BYTE    Diskette motor status:
  81.             bit 7 =1 current operation is write or format
  82.               =0 current operation is read or verify
  83.             bit 6    reserved
  84.             bits 5-4 diskette drive number selected (0-3)
  85.             bit 3 =1 diskette 3 motor on
  86.             bit 2 =1 diskette 2 motor on
  87.             bit 1 =1 diskette 1 motor on
  88.             bit 0 =1 diskette 0 motor on
  89.  40h    BYTE    Diskette motor turn-off time-out count
  90.  41h    BYTE    Diskette last operation status (0 = OK)
  91.             bit 7 =1 drive not ready
  92.             bit 6 =1 seek error
  93.             bit 5 =1 general controller failure
  94.             bits 4-0:
  95.                 00h no error
  96.                 01h invalid request/parameter
  97.                 02h address mark not found
  98.                 03h write-protect error
  99.                 04h sector not found
  100.                 06h diskette change line active
  101.                 08h DMA overrun
  102.                 09h DMA across 64k boundary
  103.                 0Ch media type unknown
  104.                 10h CRC error on read
  105.             Note: the following values for this byte differ somewhat
  106.             from the bitfield definition above:
  107.                 30h drive does not support media sense
  108.                 31h no media in drive
  109.                 32h drive does not support media type
  110.                 AAh diskette drive not ready
  111.  42h  7 BYTEs    Diskette/Fixed disk status/command bytes
  112.     42h BYTE    XT: command byte to hard disk controller
  113.         AT: write precompensation cylinder number / 4
  114.     43h    BYTE    XT: bit 5 = drive number, bits 3-0=head number
  115.         AT: sector count
  116.     44h BYTE    XT: bits 6,7 = high bits of track, bits 5-0 = start sector-1
  117.         AT: starting sector
  118.     45h BYTE    low byte of track number
  119.     46h BYTE    XT: sector count
  120.         AT: high bits of track number
  121.     47h BYTE    XT: controlbyte from HD parameters (step rate,...)
  122.         AT: 101DHHHH, D=drive number, HHHH=head number
  123.     48h BYTE    XT: INT 13h subfunction number
  124.         AT: comand byte to hard disk controller
  125.  49h    BYTE    Video current mode
  126.  4Ah    WORD    Video columns on screen
  127.  4Ch    WORD    Video page (regen buffer) size in bytes
  128.  4Eh    WORD    Video current page start address in regen buffer
  129.  50h 16 BYTEs    Video cursor position (col, row) for eight pages, 0 based
  130.  60h    WORD    Video cursor type, 6845 compatible, hi=startline, lo=endline
  131.  62h    BYTE    Video current page number
  132.  63h    WORD    Video CRT controller base address: color=03D4h, mono=03B4h
  133.  65h    BYTE    Video current setting of mode select register 03D8h/03B8h
  134.  66h    BYTE    Video current setting of CGA palette register 03D9h
  135.  67h    DWORD    {POST real mode re-entry point after certain resets}
  136.         [PS except Mod 25,30] pointer to reset code upon system reset
  137.             with memory preserved (see offset 72h)
  138.  6Bh    BYTE    POST last unexpected interrupt
  139.  6Ch    DWORD    Timer ticks since midnight
  140.  70h    BYTE    Timer overflow, non-zero if has counted past midnight
  141.  71h    BYTE    Ctrl-Break flag: bit 7=1
  142.  72h    WORD    POST reset flag:
  143.             = 1234h to bypass memory test (warm boot)
  144.             = 4321h [PS/2 except Mod 25,30] to preserve memory
  145.             = 5678h [Conv] system suspended
  146.             = 9ABCh [Conv] manufacturing test mode
  147.             = ABCDh [Conv] POST loop mode
  148.             =    64h Burn-in mode
  149.  74h    BYTE    Fixed disk last operation status, except ESDI drives:
  150.             00h no error
  151.             01h invalid function request
  152.             02h address mark not found
  153.             03h write protect error
  154.             04h sector not found
  155.             05h reset failed
  156.             06h diskette removed
  157.             07h drive parameter activity failed
  158.             08h DMA overrun
  159.             09h DMA data boundary error
  160.             0Ah bad sector flag detected
  161.             0Bh bad track detected
  162.             0Ch requested diskette media type not found
  163.             (PS/2 or extended BIOS only)
  164.             unsupported track
  165.             0Dh invalid number of sectors for Format
  166.             0Eh control data address mark detected
  167.             0Fh DMA arbitration level out of range
  168.             10h uncorrectable ECC or CRC error
  169.             11h ECC corrected data error
  170.             20h general controller failed
  171.             40h seek failed
  172.             80h time out
  173.             AAh drive not ready
  174.             BBh undefined error
  175.             CCh write fault on selected drive
  176.             E0h status error/error register is zero
  177.             FFh sense failed
  178.  74h    BYTE    [WD1002-27X SuperBIOS] total drives, first controller only
  179.  75h    BYTE    Fixed disk: number of fixed disk drives
  180.         [WD1002-27X SuperBIOS] total fixed drives, both controllers
  181.  76h    BYTE    Fixed disk: control byte    {IBM document only for XT}
  182.         XT: hard disk controller's I/O address (Western Digital)
  183.         [WD1002-27X SuperBIOS] used in track recalculation
  184.  77h    BYTE    Fixed disk: I/O port offset {IBM document only for XT}
  185.         [WD1002-27X SuperBIOS] used in track recalculation
  186.  78h  3 BYTEs    Parallel devices 1-3 time-out counters
  187.  7Bh    BYTE    parallel device 4 time-out counter [non-PS and PS Mod 25,30]
  188.         bit 7-6 reserved
  189.         bit 5 set if Virtual DMA Spec supported [PS] (see INT 4B)
  190.         bit 4 reserved
  191.         bit 3 set if INT 4Bh intercepted
  192.         bit 2 reserved
  193.         bit 1 set if Generic SCSI CBIOS services available on INT 4Bh
  194.         bit 0 reserved
  195.  7Ch  4 BYTEs    Serial devices 1-4 time-out counters
  196.  80h    WORD    Keyboard buffer start as offset from segment 40h (normally 1Eh)
  197.  82h    WORD    Keyboard buffer end+1 as offset from segment 40h (normally 3Eh)
  198.         [XT BIOS dated 11/08/82 ends here]
  199.  84h    BYTE    Video EGA/MCGA/VGA rows on screen minus one
  200.  85h    WORD    Video EGA/MCGA/VGA character height in scan-lines
  201.  87h    BYTE    Video EGA/VGA control: [MCGA: =00h]
  202.             bit 7:  =1 if not to clear RAM (see INT 10h, AH=00h)
  203.             bits 6-5: RAM on adapter = (this field + 1) * 64K
  204.             bit 4:  reserved
  205.             bit 3:  =0 if EGA/VGA video system active, =1 if inactive
  206.             bit 2:  =1 if to wait for display enable (what means this?)
  207.             bit 1:  =0 for color or ECD monitor, =1 for mono monitor
  208.             bit 0:  =0 alphanumeric cursor emulation enabled, =1 not.
  209.                 When enabled, text mode cursor size (INT 10,AH=01h)
  210.                 settings looking like CGA ones are translated to
  211.                 equivalent EGA/VGA ones.
  212.  88h    BYTE    Video EGA/VGA switches: [MCGA: reserved]
  213.             bits 7-4: power-on state of feature connector bits 3-0
  214.             bits 3-0: configuration switches 4-1 (=0 on, =1 off)
  215.               Values as read:
  216.             0h Pri MDA,        Sec EGA+old color display 40 x 25
  217.             1h Pri MDA,        Sec EGA+old color display 80 x 25
  218.             2h Pri MDA,        Sec EGA+ECD normal mode (CGA emul)
  219.             3h Pri MDA,        Sec EGA+ECD enhanced mode
  220.             4h Pri CGA 40 x 25, Sec EGA mono display
  221.             5h Pri CGA 80 x 25, Sec EGA mono display
  222.             6h Pri EGA+old color display 40 x 25,  Sec MDA
  223.             7h Pri EGA+old color display 80 x 25,  Sec MDA
  224.             8h Pri EGA+ECD normal mode (CGA emul), Sec MDA
  225.             9h Pri EGA+ECD enhanced mode,           Sec MDA
  226.             Ah Pri EGA mono display,           Sec CGA 40 x 25
  227.             Bh Pri EGA mono display,           Sec CGA 80 x 25
  228.             When bit4 of 40h:89h is 0, VGA emulates 350-line EGA if
  229.             this byte is x3h or x9h, otherwise emulates 200-line CGA in
  230.             400-line double scan. VGA resets this byte to x9h after the
  231.             mode set.
  232.             See also note for next byte.
  233.  89h    BYTE    {Video MCGA/VGA mode-set option control:}
  234.             bits 7 and 4:
  235.             0 0  350-line mode requested
  236.             0 1  400-line mode at next mode set
  237.             1 0  200-line mode requested
  238.             1 1  reserved
  239.             Apparently VGA BIOS mode set disregards bit 7 and uses
  240.             byte 40h:88h to determine 200/350 selection when bit 4
  241.             is zero. Presumably bit 7 is a convenience for other
  242.             purposes. Bit 7 is reset to zero after the mode set.
  243.             bit 6:  =1 if display switching enabled, =0 if disabled
  244.             bit 5:  reserved
  245.             bit 4:  [VGA]  =1 if to use 400-line mode at next mode set
  246.                    =0 if to emulate EGA at next mode set
  247.                       This bit set to 1 after the mode set.
  248.                 [MCGA] =1 use 400-line mode at next mode set
  249.                    =0 emulate CGA, digital monitor, 200 lines,
  250.                       8 x 8 text font at next mode set
  251.                       Bit unchanged by mode set.
  252.             bit 3:  =0 if default palette loading enabled at mode set
  253.             bit 2:  =1 if mono display, =0 if color display
  254.             bit 1:  =1 if gray scale summing enabled, =0 if disabled
  255.             bit 0:  [VGA] =1 if VGA active, =0 if not
  256.                 [MCGA] reserved, zero
  257.         Note: the Tseng ET4000 BIOS v3.00 uses bits 6-4 of 88h and
  258.             bits 6-5 of 89h to specify graphics-mode refresh
  259.             rates as follows
  260.                 88h/6        640x480:  1 for 72Hz,0 for 60Hz
  261.                 88h/5+89h/6    800x600:  00  60Hz
  262.                               01  56Hz
  263.                               11  72Hz
  264.                 88h/4+89h/5    1024x768: 00  interlaced
  265.                               01  60Hz
  266.                               10  72Hz???
  267.                               11  70Hz
  268.  8Ah    BYTE    {Video [MCGA/VGA]: index into Display Combination Code table}
  269.  8Bh 11 BYTEs    reserved [PC, PCjr, PC/XT 11/8/82, and Convertible]
  270.  8Bh    BYTE    Diskette media control [not XT]:
  271.             bits 7-6: Last data rate set by controller:
  272.                   00=500kbps, 01=300kbps, 10=250kbps, 11=1Mbps
  273.             bits 5-4: Last diskette drive step rate selected
  274.                   00=0Ch, 01=0Dh, 10=0Eh, 11=0Ah
  275.             bits 3-2: {Data rate at start of operation}
  276.             bits 1-0: reserved
  277.  8Ch    BYTE    Fixed disk controller status [not XT]
  278.  8Dh    BYTE    Fixed disk controller Error Status [not XT]
  279.  8Eh    BYTE    Fixed disk Interrupt Control [not XT]
  280.         cleared to 00h at start of disk operation, set to FFh by IRQ14
  281.         handler when hard disk controller completes command
  282.  8Fh    BYTE    {Diskette controller information [not XT]:}
  283.             bit 7:  reserved
  284.             bit 6:  =1 drive 1 determined
  285.             bit 5:  =1 drive 1 is multi-rate, valid if drive determined
  286.             bit 4:  =1 drive 1 supports 80 tracks, always valid
  287.             bit 3:  reserved
  288.             bit 2:  =1 drive 0 determined
  289.             bit 1:  =1 drive 0 is multi-rate, valid if drive determined
  290.             bit 0:  =1 drive 0 supports 80 tracks, always valid
  291.  90h    BYTE    Diskette drive 0 media state
  292.  91h    BYTE    Diskette drive 1 media state
  293.             bits 7-6: Data rate
  294.                 00=500kbps, 01=300kbps, 10=250kbps, 11=1Mbps
  295.             bit       5: =1 if double stepping reqd (e.g. 360kB in 1.2MB)
  296.             bit       4: =1 if media established
  297.             bit       3: =1 if drive capable of supporting 4MB media
  298.             bits 2-0: on exit from BIOS, contain:
  299.                 000 trying 360kB in 360kB
  300.                 001 trying 360kB in 1.2MB
  301.                 010 trying 1.2MB in 1.2MB
  302.                 011 360kB in 360kB established
  303.                 100 360kB in 1.2MB established
  304.                 101 1.2MB in 1.2MB established
  305.                 110 reserved
  306.                 111 all other formats/drives
  307.  92h    BYTE    {Diskette drive 0 media state at start of operation}
  308.         officially "Drive 2 media state"
  309.         bits 7-3 as above
  310.         bit 2: =1 if multiple data rate capability determined
  311.         bit 1: =1 if multiple data rate capability
  312.         bit 0: =1 if drive has 80 tracks, =0 if 40 tracks
  313.  92h    BYTE    [Olivetti Quaderno] Hard Disk powerdown countdown in clock
  314.         ticks (HD turned off when counter reaches zero)
  315.  93h    BYTE    {Diskette drive 1 media state at start of operation}
  316.         officially "Drive 3 media state"
  317.         bits 7-3 as above
  318.         bit 2: =1 if multiple data rate capability determined
  319.         bit 1: =1 if multiple data rate capability
  320.         bit 0: =1 if drive has 80 tracks, =0 if 40 tracks
  321.  94h    BYTE    Diskette drive 0 current track number
  322.  95h    BYTE    Diskette drive 1 current track number
  323.  96h    BYTE    Keyboard status byte 1
  324.             bit 7 =1 read-ID in progress
  325.             bit 6 =1 last code read was first of two ID codes
  326.             bit 5 =1 force Num Lock if read-ID and enhanced keyboard
  327.             bit 4 =1 enhanced keyboard installed
  328.             bit 3 =1 Right Alt pressed
  329.             bit 2 =1 Right Ctrl pressed
  330.             bit 1 =1 last code read was E0h
  331.             bit 0 =1 last code read was E1h
  332.  97h    BYTE    Keyboard status byte 2
  333.             bit 7 =1 keyboard transmit error flag
  334.             bit 6 =1 LED update in progress
  335.             bit 5 =1 RESEND received from keyboard
  336.             bit 4 =1 ACK received from keyboard
  337.             bit 3 reserved, must be zero
  338.             bit 2 Caps Lock LED
  339.             bit 1 Num Lock LED
  340.             bit 0 Scroll Lock LED
  341.  98h    DWORD    Timer2: [AT, PS exc Mod 30] ptr to user wait-complete flag
  342.                         (see INT 15, AX=8300h)
  343.  9Ch    DWORD    Timer2: [AT, PS exc Mod 30] user wait count in microseconds
  344.  A0h    BYTE    Timer2: [AT, PS exc Mod 30] Wait active flag:
  345.             bit 7 =1 wait time elapsed
  346.             bits 6-1 reserved
  347.             bit 0 =1 INT 15h, AH=86h has occurred
  348.  A1h    BYTE    bit 5 set if LAN Support Program Interrupt Arbitrator present
  349.         (DEVICE=DXMA0MOD.SYS)
  350.  A2h  6 BYTEs    reserved for network adapters
  351.  A4h    DWORD    [PS/2 Mod 30] Saved Fixed Disk Interrupt Vector
  352.  A8h    DWORD    Video: EGA/MCGA/VGA ptr to Video Save Pointer Table (see below)
  353.  ACh-AFh    reserved
  354.  B0h    BYTE    (Phoenix 386 BIOS 1.10 10a) loop count for hard disk timeout
  355.           and delaying when beeping due to full keyboard buffer
  356.  B0h    DWORD    ptr to 3363 Optical disk driver or BIOS entry point.
  357.             When 3363 BIOS present, the signature "OPTIC ",00h occurs 3
  358.             bytes beyond this entry point.
  359.             When 3363 BIOS and 3363 File System Driver present, the
  360.             signature "FILE SYSTEM DRIVER",00h occurs 3 bytes beyond
  361.             this entry point.
  362.  B0h 16 BYTEs    (1988 Phoenix 386 BIOS 1.10 03) drive parameters for hard disk
  363.         type 48 (see INT 41,INT 46)
  364.  B4h    WORD    reserved
  365.  B5h    BYTE    (Dell 4xxDE)
  366.         bit 2: ??? (related to disk drives)
  367.         bit 5: page tables set to allow Weitek addressing in real mode
  368.         bit 6: Weitek math coprocessor present
  369.  B6h  3 BYTEs    reserved for POST?
  370.  B9h  7 BYTEs    ???
  371.  C0h 16 BYTEs    (1988 Phoenix 386 BIOS 1.10 03) drive parameters for hard disk
  372.         type 49 (see INT 41,INT 46)
  373.  C0h 14 BYTEs    reserved
  374.  CEh    WORD    count of days since last boot
  375.  D0h-EFh    reserved
  376.  D0h    BYTE    [Digiboard MV/4] length of data table
  377.  D1h    BYTE    [Digiboard MV/4] product ID
  378.  D2h    WORD    [Digiboard MV/4] base address found
  379.  D4h    BYTE    [Digiboard MV/4] ports
  380.  D5h    BYTE    [Digiboard MV/4] IRQ
  381.  D6h    WORD    [Digiboard MV/4] keyboards found
  382.  D8h    WORD    [Digiboard MV/4] mice found
  383.  DAh    BYTE    [Digiboard MV/4] current port (used by VGA initialization only)
  384.  DBh    BYTE    [Digiboard MV/4] master 8259 mask (used by VGA init only)
  385.  DCh    BYTE    [Digiboard MV/4] slave 8259 mask (used by VGA init only)
  386.  E0h-EFh    [Phoenix 386 BIOS] drive parameter table for first hard disk
  387.           if configurable "type 47"
  388.  EAh    WORD    [Omti controller] segment of extended BIOS data area???
  389.         drive parameter tables stored in specified segment
  390.  ECh    WORD    (Dell 4xxDE BIOS A11) loop count for delays
  391.  F0h-FFh    reserved for user
  392. 100h    BYTE    Print Screen Status byte
  393. 10Eh    BYTE    state of BREAK at start of BASICA.COM execution
  394. 10Fh    BYTE    flag: 02h if BASICA v2.10 running
  395. 116h    DWORD    INT 1Bh at start of BASICA.COM execution
  396. 11Ah    DWORD    INT 24h at start of BASICA.COM execution
  397.  
  398. Format of Interrupt Vector Table data storage (from 0000h:0000h):
  399. Offset    Size    Description
  400.  31Dh 16 BYTEs    user-definable hard disk parameters for drive type 47
  401.         (1989 AMI 386sx BIOS) (see INT 41,INT 46)
  402.  32Dh 16 BYTEs    user-definable hard disk parameters for drive type 48
  403.         (1989 AMI 386sx BIOS) (see INT 41,INT 46)
  404. Note:    these fields are used is the AMI BIOS setup is set to use the top of
  405.       the interrupt table for the extended BIOS data area
  406.  
  407. Format of Extended BIOS Data Area (see 40:0Eh for ptr) [PS only]
  408. Offset    Size    Description
  409.  00h    BYTE    Length of EBDA in kilobytes
  410.  01h 15 BYTEs    reserved
  411.  17h    BYTE    Number of entries in POST error log (0-5)
  412.  18h  5 WORDs    POST error log (each word is a POST error number)
  413.  19h-21h    reserved
  414.  22h    DWORD    Pointing Device Driver entry point
  415.  26h    BYTE    Pointing Device Flags 1
  416.            bit 7:    =1 command in progress
  417.            bit 6:    =1 resend
  418.            bit 5:    =1 acknowledge
  419.            bit 4:    =1 error
  420.            bit 3:    =0 reserved
  421.            bits 2-0: index count
  422.  27h    BYTE    Pointing Device Flags 2
  423.            bit 7:    =1 device driver far call flag
  424.            bits 6-3: reserved
  425.            bits 2-0: package size
  426.  28h  7 BYTEs    Pointing Device Auxiliary Device Data
  427.  2Fh    BYTE    reserved
  428.  30h    DWORD    Vector for INT 07h stored here during 80387 interrupt
  429.  34h    DWORD    Vector for INT 01h stored here during INT 07h emulation
  430.  38h    BYTE    Scratchpad for 80287/80387 interrupt code
  431.  39h    WORD    Timer3: Watchdog timer initial count
  432.  3Bh    BYTE    ??? seen non-zero on Model 30
  433.  3Ch    BYTE    ???
  434.  3Dh 16 BYTEs    Fixed Disk parameter table for drive 0 (for older machines
  435.             which don't directly support the installed drive)
  436.  4Dh 16 BYTEs    Fixed Disk parameter table for drive 1 (for older machines
  437.             which don't directly support the installed drive)
  438.  5Dh-6Bh    ???
  439.  6Ch    BYTE    Fixed disk: (=FFh on ESDI systems)
  440.             bits 7-4: Channel number 00-0Fh
  441.             bits 3-0: DMA arbitration level 00-0Eh
  442.  6Dh    BYTE    ???
  443.  6Eh    WORD    current typematic setting (see INT 16/AH=03h)
  444.  70h 167 BYTEs    ???
  445. 117h    WORD    keyboard ID (see INT 16/AH=0Ah)
  446. 119h and up:    ??? seen non-zero on Model 60
  447. 3F0h    BYTE    Fixed disk buffer (???!!!)
  448.  
  449. Format of Video Save Pointer Table [EGA/VGA/MCGA only]:
  450. Offset    Size    Description
  451.  00h    DWORD    ptr to Video Parameter Table
  452.  04h    DWORD    ptr to Parameter Dynamic Save Area, else 0 [EGA/VGA only]
  453.  08h    DWORD    ptr to Alphanumeric Character Set Override, else 0
  454.  0Ch    DWORD    ptr to Graphics Character Set Override, else 0
  455.  10h    DWORD    [VGA only] ptr to Secondary Save Pointer Table, must be valid
  456.  14h    DWORD    reserved, zero
  457.  18h    DWORD    reserved, zero
  458. Note: table initially in ROM, copy to RAM to alter, then update 40h:A8h.
  459.  
  460. Format of Secondary Video Save Pointer Table [VGA only]:
  461. Offset    Size    Description
  462.  00h    WORD    Length of this table in bytes, including this word (1Ah)
  463.  02h    DWORD    ptr to Display Combination Code Table, must be valid
  464.  06h    DWORD    ptr to second Alphanumeric Character Set Override, else 0
  465.  0Ah    DWORD    ptr to User Palette Profile Table, else 0
  466.  0Eh    DWORD    reserved, zero
  467.  12h    DWORD    reserved, zero
  468.  16h    DWORD    reserved, zero
  469. Note: table initially in ROM, copy to RAM to alter, then alter Save Ptr Table.
  470.  
  471. Format of Video Parameter Table [EGA, VGA only]:
  472. An array of 23 [EGA] or 29 [VGA] elements, each element being 64 bytes long.
  473. Elements appear in the order:
  474.  00h-03h    Modes 00h-03h in 200-line CGA emulation mode
  475.  04h-0Eh    Modes 04h-0Eh
  476.  0Fh-10h    Modes 0Fh-10h when only 64kB RAM on adapter
  477.  11h-12h    Modes 0Fh-10h when >64kB RAM on adapter
  478.  13h-16h    Modes 00h-03h in 350-line mode
  479.  17h        VGA Modes 00h or 01h in 400-line mode
  480.  18h        VGA Modes 02h or 03h in 400-line mode
  481.  19h        VGA Mode  07h in 400-line mode
  482.  1Ah-1Ch    VGA Modes 11h-13h
  483.  
  484. Format of Video Parameter Table element [EGA, VGA only]:
  485. Offset    Size    Description
  486.  00h    BYTE    Columns on screen          (see 40h:4Ah)
  487.  01h    BYTE    Rows on screen minus one      (see 40h:84h)
  488.  02h    BYTE    Height of character in scan lines (see 40h:85h)
  489.  03h    WORD    Size of video buffer          (see 40h:4Ch)
  490.  05h  4 BYTEs    Values for Sequencer Registers 1-4
  491.  09h    BYTE    Value for Miscellaneous Output Register
  492.  0Ah 25 BYTEs    Values for CRTC Registers 00h-18h
  493.  23h 20 BYTEs    Values for Attribute Controller Registers 00h-13h
  494.  37h  9 BYTEs    Values for Graphics Controller Registers 00h-08h
  495.  
  496. Format of Video Parameter Table [MCGA only] {guesswork from inspection}:
  497.     - 16 triplet BYTEs of R,G,B DAC info for 16 colors;
  498.     - An array of 11 elements, each element being 32 bytes long.
  499.       Elements appear in the order:
  500.         Modes 00h,01h in 200-line mode for digital displays
  501.         Modes 00h,01h in 400-line mode for analog displays
  502.         Modes 02h,03h in 200-line mode for digital displays
  503.         Modes 02h,03h in 400-line mode for analog displays
  504.         Modes 04h,05h in 200-line mode for digital displays
  505.         Modes 04h,05h in 400-line mode for analog displays
  506.         Mode  06h in 200-line mode for digital displays
  507.         Mode  06h in 400-line mode for analog displays
  508.         Mode  11h
  509.         Mode  13h in 200-line mode for digital displays
  510.         Mode  13h in 400-line mode for analog displays
  511.  
  512. Format of Video Parameter Table element [MCGA only]:
  513. Offset    Size    Description
  514.  00h    BYTE    Columns on screen          (see 40h:4Ah)
  515.  01h    BYTE    Rows on screen minus one      (see 40h:84h)
  516.  02h    BYTE    Height of character in scan lines (see 40h:85h)
  517.  03h    WORD    Size of video buffer          (see 40h:4Ch)
  518.  05h    WORD    ??? always zero
  519.  07h 21 BYTEs    Video data registers 00h-14h to port 3D5h indexed by 3D4h
  520.  1Ch    BYTE    PEL Mask to port 3C6h
  521.  1Dh    BYTE    CGA Mode Control to port 3D8h
  522.  1Eh    BYTE    CGA Border Control to port 3D9h
  523.  1Fh    BYTE    Extended Mode Control to port 3DDh
  524.  
  525. Format of Video Parameter Dynamic Save Area [EGA, VGA only]:
  526. Offset    Size    Description
  527.  00h 16 BYTEs    Last data written to Attribute Contr. Palette Registers 0-15
  528.  10h    BYTE    Last data written to Attribute Controller Overscan Register
  529.  11h-FFh    Reserved
  530.         Note: Need for table was that EGA registers were write-only.
  531.         Note: If default values (from the Video Parameter Table) are
  532.               over-ridden at a mode set by the VGA User Palette Profile
  533.               Table, then the Dynamic Save Area is updated with the
  534.               default values, not the User Profile ones.
  535.  
  536. Format of Alphanumeric Character Set Override:
  537. Offset    Size    Description
  538.  00h    BYTE    Length in bytes of each character in font table
  539.  01h    BYTE    Character generator RAM bank to load, 0=normal
  540.  02h    WORD    Number of characters in font table, normally 256
  541.  04h    WORD    Code of first character in font table, normally 0
  542.  06h    DWORD    ptr to font table
  543.  0Ah    BYTE    Displayable rows (FFh=use maximum calculated value)
  544.  0Bh    BYTEs    Array of mode values to which this font is to pertain
  545.     BYTE    FFh end of array
  546.  
  547. Format of Second Alphanumeric Character Set Override:
  548. Authorities differ, some say same as first override above, but IBM say:
  549. Offset    Size    Description
  550.  00h    BYTE    Length in bytes of each character in font table
  551.  01h    BYTE    Character generator RAM bank to load, normally non-zero
  552.  02h    BYTE    reserved
  553.  03h    DWORD    ptr to font table
  554.  07h    BYTEs    Array of mode values to which this font is to pertain
  555.     BYTE    FFh end of array
  556.  
  557. Format of Graphics Character Set Override:
  558. Offset    Size    Description
  559.  00h    BYTE    Number of displayable character rows
  560.  01h    WORD    Length in bytes of each character in font table
  561.  03h    DWORD    ptr to font table
  562.  07h    BYTEs    Array of mode values to which this font is to pertain
  563.     BYTE    FFh end of array
  564.  
  565. Format of Display Combination Code Table [VGA only]:
  566. Offset    Size    Description
  567.  00h    BYTE    Number of entries in the DCC table at offset 04h
  568.  01h    BYTE    Version number
  569.  02h    BYTE    Maximum display type code that can appear in DCC table
  570.  03h    BYTE    reserved
  571.  04h    ARRAY OF 2 BYTEs Each pair of bytes gives a valid display combination
  572.             Meaning of each byte:
  573.             00h    no display
  574.             01h    MDA with mono display
  575.             02h    CGA with color display
  576.             03h    reserved
  577.             04h    EGA with color display
  578.             05h    EGA with mono display
  579.             06h    Professional Graphics Controller
  580.             07h    VGA with mono display
  581.             08h    VGA with color display
  582.             09h    reserved
  583.             0Ah    MCGA with digital color display
  584.             0Bh    MCGA with analog mono display
  585.             0Ch    MCGA with analog color display
  586.             FFh    unrecognised video system
  587.  
  588. Format of User Palette Profile Table [VGA only]:
  589. Offset    Size    Description
  590.  00h    BYTE    Underlining: 01h=enable in all alphanumeric modes
  591.                  00h=enable in monochrome alphanumeric modes only
  592.                  FFh=disable in all alphanumeric modes
  593.  01h    BYTE    reserved
  594.  02h    WORD    reserved
  595.  04h    WORD    Number (0-17) of Attribute Controller registers in table
  596.  06h    WORD    Index (0-16) of first Attribute Controller register in table
  597.  08h    DWORD    ptr to table of Attribute Controller registers to override
  598.             Table is an array of BYTEs.
  599.  0Ch    WORD    Number (0-256) of video DAC Color registers in table
  600.  0Eh    WORD    Index (0-255) of first video DAC Color register in table
  601.  10h    DWORD    ptr to table of video DAC Color registers to override
  602.             Table is ??? triplets ??? of BYTEs???
  603.  14h    BYTEs    array of mode values to which this profile is to pertain
  604.     BYTE    FFh end of array
  605.